草庐IT

c++ - g++ 警告 : conversion to uint16_t from int may alter its value

全部标签

windows - Microsoft Stack 是否始终与 16 字节对齐?

在AssemblyLanguage,SeventhEditionforx86ProcessorsbyKipIrvine,在第211页,它在5.53x86调用约定下说,它解决了Microsoftx64调用约定,Whencallingasubroutine,thestackpointer(RSP)mustbealignedona16-byteboundary(amultipleof16).TheCALLinstructionpushesan8-bytereturnaddressonthestack,sothecallingprogrammustsubtract8fromthestackpo

c++ - shell 扩展 : DragQueryFile returns at most 16 (in Windows 7)

我已经编写了一个shell扩展(由TheCompleteIdiot'sGuidetoWritingShellExtensions指导),在我升级到Windows7(32位)之前它可以正常工作。现在,函数DragQueryFileUINTuNumFiles=DragQueryFile(hDrop,0xFFFFFFFF,NULL,0);返回所选文件的正确数量,直到该数量超过16。然后始终返回16。我已经在XP(32)和Vista(32)中测试过它,它可以工作,在Windows7(32/64)中它没有。有什么想法吗?谢谢。 最佳答案 IS

windows - 这是消除警告 C4945(已从另一个程序集导入的符号)的正确方法吗?

我有一个.net解决方案(用C++/CLI编写),它引用了一些.dll项目,如下所示:MainProject->ProjectA->ProbjectBMainProject->ProjectB最初我从MainProject中引用了ProjectA和ProjectB,这给了我上面提到的警告。我可以通过从ProjectMain中删除对ProjectB的引用来删除警告,但这会使MainProject依赖于ProjectB变得不那么明显。这是消除警告的正确做法吗? 最佳答案 笼统地说,一个依赖系统可以用directedgraph来描述。其中

windows - 为什么 x64 项目使用默认的打包对齐方式 16?

如果您在VS2012的x64项目中编译以下代码而没有任何/Zp标志:#pragmapack(show)然后编译器会吐出:valueofpragmapack(show)==16如果项目使用Win32的话,编译器会吐出:valueofpragmapack(show)==8我不明白的是,在Win64中任何类型(即longlong和指针)的最大自然对齐是8。那么为什么不直接为x64设置默认对齐8?与此有点相关,为什么有人会使用/Zp16?编辑:这里有一个例子来说明我在说什么。即使对于x64指针具有8字节的自然对齐,Zp1也可以将它们强制为1字节边界。structA{chara;char*b;}

c# - 以类似于 wpf 控件错误的方式显示警告

我想在验证业务对象时显示警告和错误,并以可视化方式显示给用户。例如,我有一个实现如下接口(interface)的业务对象类:interfaceIOrderItem:IDataErrorInfo{intProductId{get;set;}stringProductName{get;set;}decimalPrice{get;set;}IDictionaryWarnings{get;}}这绑定(bind)到UI,如下所示:错误是:价格“价格不能小于0”当我使用IDataErrorInfo接口(interface)将错误消息放在业务对象上时,它工作得很好,并在文本框周围绘制了一个红色边框。

c# - 我应该使用 int 还是 UInt16?

这可能有点微不足道,但在C#中,当在变量中存储网络端口时,您更喜欢int还是UInt16?框架类在处理网络端口时使用int,尽管UInt16实际上表示有效值。 最佳答案 signed(int/short等,而不是uint/ushort)具有作为CLS的优势合规,因此除非您有充分的理由,否则建议这样做。Reint与short-在大多数情况下,使用int(或uint),因为所有运算符都为此进行了优化。如果您只是存储和检索它,那么这当然不是问题。 关于c#-我应该使用int还是UInt16?,

C# 对 ushort (UInt16) 进行位移

我需要对16位整数(ushort/UInt16)执行按位左移,但C#中的按位运算符似乎仅适用于int(32位)。我如何在ushort上使用 最佳答案 移位后将结果值转换回ushort:ushortvalue=1;ushortshifted=(ushort)(value 关于C#对ushort(UInt16)进行位移,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3819593/

c# - 关于 C# 中常量小数字段的令人困惑的警告

我在探索大量C#教程时尝试使用const修饰符,并在类中放置了一堆const修饰符,但实际上没有在任何地方使用它们:classConstTesting{constdecimalsomedecimal=1;constintsomeint=2;...}对于此类,我收到以下警告(使用csc):ConstTesting.cs(3,19):warningCS0414:Thefield‘ConstTesting.somedecimal’isassignedbutitsvalueisneverused我不明白的是我只收到针对constdecimal的警告。constint不会给我任何警告,无论顺序或

c# - 在 C# 中用 16 位字交换字节序的更快方法

必须有一种更快更好的方法来交换16位字的字节然后这个。:publicstaticvoidSwap(byte[]data){for(inti=0;i有没有人有想法? 最佳答案 在我尝试申请Uberhacker奖时,我提交了以下内容。对于我的测试,我使用了一个8,192字节的Source数组并调用了SwapX2100,000次:publicstaticunsafevoidSwapX2(Byte[]source){fixed(Byte*pSource=&source[0]){Byte*bp=pSource;Byte*bp_stop=bp+

c# - 为什么 Int16 变量减去 Int16 参数的结果是 Int32?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:byte+byte=int…why?我有这样的方法:voidMethod(shortparameter){shortlocalVariable=0;varresult=localVariable-parameter;}为什么结果是Int32而不是Int16?